約 5,181,864 件
https://w.atwiki.jp/nina_a/pages/61.html
テンプレート(Templates) このページを編集 概要 すべてのWPFコントロールは"見た目"を持たないように設計されている.ただし,既定の見た目を持っており,これからVisualTreeが作成される.この見た目を決めるものがコントロールテンプレートと呼ばれるものであり,XAMLで定義されている. コントロールの標準のテンプレートを表示する このプログラムは Matthew MacDonald:Pro WPF in C# 2010 Windows Presentation Foundation in .Net 4 に掲載されているものをもとに作成した. +コントロールの標準のテンプレートを表示するサンプルプログラム XAML Window x Class="WpfSampleApplication.MainWindow" xmlns="http //schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns x="http //schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="600" Width="1000" Loaded="Window_Loaded" StackPanel Orientation="Horizontal" Name="layoutRoot" TreeView Name="lstTypes" SelectedItemChanged="lstTypes_SelectedItemChanged" Width="400"/ TextBox Name="txtTemplate" Width="600" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto"/ /StackPanel /Window C# using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; using System.Globalization; using System.Reflection; using System.Xml; using System.Windows.Markup; namespace WpfSampleApplication { /// summary /// MainWindow.xaml の相互作用ロジック /// /summary public partial class MainWindow Window { public MainWindow() { InitializeComponent(); } private void Window_Loaded(object sender, RoutedEventArgs e) { Type controlType = typeof(Control); List Type derivedTypes = new List Type (); // Search all the types in the assembly where the Control class is defined. Assembly assembly = Assembly.GetAssembly(typeof(Control)); foreach (Type type in assembly.GetTypes()) { // Only add a type of the list if it s a Control, a concrete class, // and public. if (type.IsSubclassOf(controlType) !type.IsAbstract type.IsPublic) { derivedTypes.Add(type); } } // Sort the types. The custom TypeComparer class orders types // alphabetically by type name. derivedTypes.Sort(new AlphabeticalComparer()); // Show the list of types. lstTypes.ItemsSource = derivedTypes; } private void lstTypes_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs object e) { try { // Get the selected type. Type type = (Type)lstTypes.SelectedItem; // Instantiate the type. ConstructorInfo info = type.GetConstructor(System.Type.EmptyTypes); Control control = (Control)info.Invoke(null); // Add it to the grid (but keep it hidden). control.Visibility = Visibility.Collapsed; layoutRoot.Children.Add(control); // Get the template. ControlTemplate template = control.Template; // Get the XAML for the template. XmlWriterSettings settings = new XmlWriterSettings(); settings.Indent = true; StringBuilder sb = new StringBuilder(); XmlWriter writer = XmlWriter.Create(sb, settings); XamlWriter.Save(template, writer); // Display the template. txtTemplate.Text = sb.ToString(); // Remove the control from the grid. layoutRoot.Children.Remove(control); } catch (Exception err) { txtTemplate.Text = " テンプレートの生成に失敗しました。 " + err.Message + " "; } } private class AlphabeticalComparer IComparer Type { public int Compare(Type x, Type y) { return string.Compare(x.FullName, y.FullName); } } } } カテゴリ:WPF 名前
https://w.atwiki.jp/atachi/pages/31.html
スタイルの使用方法 [#a5912b9b] 特定の要素にスタイルを適応 [#u3f765b2] スタイルを継承 [#f923f2e2] テンプレート [#c1ac1a97] データテンプレート [#v289532d] データテンプレートをクラスに適応させる [#x6c68de8] テンプレート内にリソースを適応させる [#e9d96c52] DataTemplateとバインドソース [#o6d284ae] コントロールテンプレート [#j961ba65] トリガー [#pb4f2efd] WPFのスタイルは、スタイルという名前ですがデザインやカラー設定を行うためだけの機能ではありません。 スタイルを定義するにはStyle要素を使用します。Style要素内ではコンポーネントのプロパティ値の設定やデータのプロパティ値の設定ができます。 データテンプレートでは再利用可能なデータバインディングを持ったスタイルを定義します。 コントロールテンプレートでは既存のコントロールのUIデザインを定義できます。 スタイルの使用方法 スタイルはXAMLのResourcesに記述します。 Style.TargetType属性の指定し、XAMLデザイナがSetter要素のPropertyの値を検証するためにも使用します。 Setter要素の値はValue属性に記述することもできますし、次のようにプロパティ要素として記述することもできます。 Setter Property="PropertyA" Setter.Value プロパティ要素 /Setter.Value /Setter 次のコードはXAML内のすべてのTextBlock要素にスタイルが適応されます。 Window.Resources Style TargetType="TextBlock" Setter Property="HorizontalAlignment" Value="Center" / Setter Property="FontSize" Value="14" / Setter Property="FontFamily" Setter.Value Comic Sans MS /Setter.Value /Setter /Style /Window.Resources Grid TextBlock Text="ようこそ。" / TextBlock Text="今日は12月8日です。" / /Grid スタイルだけを先に定義し、各VisualObjectからスタイルを参照したい場合、Style.TargetStyle属性を使用せずにx Key属性を使ってスタイルの定義だけを行います。 Window.Resources Style x Key="MyStyle" Setter Property="TextBlock.HorizontalAlignment" Value="Center" / Setter Property="TextBlock.FontSize" Value="14" / Setter Property="TextBlock.FontFamily" Value="Comic Sans MS" / /Style /Window.Resources 特定の要素にスタイルを適応 Style要素の定義時にx Key要素でスタイルに名前をつけた場合、スタイルが適応されるには明示的にスタイル名を指定する必要があります。 次の例では2つのTextBlockのうち、1番目のTextBlockだけにスタイルが適応されます。 Window.Resources Style x Key="MyStyle" TargetType="TextBlock" Setter Property="HorizontalAlignment" Value="Center" / Setter Property="FontSize" Value="14" / Setter Property="FontFamily" Value="Comic Sans MS" / /Style /Window.Resources Grid TextBlock Text="ようこそ。" Style="{StaticResource MyStyle}" / TextBlock Text="今日は12月8日です。" / /Grid スタイルを継承 Style.BaseOn属性を使用してスタイルを継承し、そこから設定済みプロパティの再設定やプロパティの追加が行えます。 Window.Resources Style TargetType="TextBlock" Setter Property="FontSize" Value="20"/ /Style Style x Key="MyColorStyle" TargetType="TextBlock" BasedOn="{StaticResource {x Type TextBlock} }" Setter Property="Foreground" Value="#FFC13B3B" / /Style /Window.Resources Grid StackPanel Height="100" HorizontalAlignment="Left" Name="stackPanel1" VerticalAlignment="Top" Width="200" TextBlock Height="23" Name="textBlock2" Text="TextBlock" / TextBlock Height="70" Name="textBlock1" Text="よだー" Style="{StaticResource MyColorStyle}"/ /StackPanel /Grid MyColorStyleは既存のTextBlockのスタイルを継承しています。 テンプレート データテンプレート コントロールテンプレート それぞれUIの描画スタイルを設定する手法で、再利用可能なことからテンプレートと呼ばれている。 データテンプレートとは主にコレクションをアイテムとして表示するコントロール(ListBox、ListView、TreeView、DataGrid、その他)で、そのアイテムを描画するためのUIを定義したものです。 コントロールテンプレートとはUIの描画そのものを再定義するものです。Buttonコントロールは1つのコントロールに見えますが内部ではGridやTextBlockを組み合わせて1つのコントロールとして描画しています。 データテンプレート VisualObjectを持つスタイルをデータテンプレートと呼びます。 データテンプレートではデータを表示する為のオブジェクト要素構造をテンプレート化し、UIデザインとデータの両方の再利用を実現できます。 テンプレート化したオブジェクト要素構造は、バインディングによって動的に表示内容を変更するように設計します。 次のサンプルでは、ListBoxに設定したデータソースの要素を描画する際に、各要素を描画するためのテンプレートを定義しています。 ListBox Width="400" Margin="10" ItemsSource="{Binding Source={StaticResource myTodoList} }" ListBox.ItemTemplate DataTemplate StackPanel TextBlock Text="{Binding Path=TaskName}" / TextBlock Text="{Binding Path=Description}"/ TextBlock Text="{Binding Path=Priority}"/ /StackPanel /DataTemplate /ListBox.ItemTemplate /ListBox データテンプレートはリソースとして定義できます。次のように予めリソースとして定義しておきx Key属性で指定した名前を定義しておけば、データテンプレートの再利用が可能です。 ListBox.ItemTemplateへはStaticResourceを使用してリソースを呼び出します。 Window xmlns local="clr-namespace my" Window.Resources ObjectDataProvider x Key="myTodoList" ObjectType="{x Type local Tasks}"/ DataTemplate x Key="myTemplate" StackPanel TextBlock Text="{Binding Path=TaskName}" / TextBlock Text="{Binding Path=Description}"/ TextBlock Text="{Binding Path=Priority}"/ /StackPanel /DataTemplate /Window.Resources !-- リソースに定義した「myTemplate」をデータテンプレートに使用する -- ListBox Width="400" Margin="10" ItemsSource="{Binding Source={StaticResource myTodoList} }" ItemTemplate="{StaticResource myTemplate" / /Window namespace my { public class Tasks ObservableCollection Task { public Tasks() { this.Add(new Task{TaskName="テレビを見る", Description="水戸黄門", Priority=3}); this.Add(new Task{TaskName="電話", Description="佐藤さんに電話", Priority=10}); this.Add(new Task{TaskName="勉強", Description="C#の勉強に明け暮れる", Priority=5}); } } public class Task { public string TaskName { get; set; } puiblic string Description { get; set; } public int Priority { get; set; } } } データテンプレートをクラスに適応させる DataTemplate.DateType を使用すると特定のオブジェクトすべてにデータテンプレートを適用することができます。 この仕組みは 非常に重要 で、任意のC#コードで記述されたクラスに対してXAMLによるUIのデザインを設定できます。 次のサンプルではListBox.ItemTemplateへデータテンプレートの設定を行っていません。しかし、正常に動作します。 これはListBoxがTaskオブジェクトを表示する際に、DataTemplateによって設定されたデータテンプレートが使用されている為です。 Window xmlns local="clr-namespace my" Window.Resources ObjectDataProvider x Key="myTodoList" ObjectType="{x Type local Tasks}"/ DataTemplate DataType="{x Type local Task}" StackPanel TextBlock Text="{Binding Path=TaskName}" / TextBlock Text="{Binding Path=Description}"/ TextBlock Text="{Binding Path=Priority}"/ /StackPanel /DataTemplate /Window.Resources ListBox Width="400" Margin="10" ItemsSource="{Binding Source={StaticResource myTodoList} }" / /Window テンプレート内にリソースを適応させる ComboBoxなどアイテムソースを受け取るコントロールでは、表示させるアイテムをItemsSourceプロパティなどに設定します。 通常はItemsSourceプロパティにはバインディングやリソースを行って項目を指定します。 しかし、データテンプレート内でバインディングを指定する場合には注意が必要です。 バインディングを使用する場合、バインドソースはデータテンプレートに与えられたアイテムになります。(ItemsSourceに設定されたコレクションの各要素がバインドソースとなる) データテンプレート内ですべてのComboBoxに同じ選択肢を表示したい場合には StaticResourceマークアップ拡張 を使用します。 Window.Resources src MyList x Key="myList" / col ArrayList x Key="MyDataSource" sys DateTime 1/2/2003 5 00 00 /sys DateTime sys DateTime 4/5/2006 13 13 13 /sys DateTime sys DateTime 7/8/2009 23 59 59 /sys DateTime /col ArrayList /Window.Resources Grid ListView ItemsSource="{StaticResource MyDataSource}" ListView.View GridView GridViewColumn Header="月" DisplayMemberBinding="{Binding Month}" / GridViewColumn Header="日" DisplayMemberBinding="{Binding Day}" / GridViewColumn Header="日付" DisplayMemberBinding="{Binding DayOfWeek}"/ GridViewColumn GridViewColumn.Header TextBlock Text="何か選択" / /GridViewColumn.Header GridViewColumn.CellTemplate DataTemplate ComboBox Name="comboBox1" Width="100" ItemsSource="{StaticResource ResourceKey=myList}" / /DataTemplate /GridViewColumn.CellTemplate /GridView /ListView.View /ListView /Grid class MyList List string { public MyList() { this.Add("日本"); this.Add("韓国"); this.Add("北朝鮮"); this.Add("中国"); this.Add("台湾"); this.Add("フィリピン"); this.Add("タイ"); this.Add("ベトナム"); } } DataTemplateとバインドソース ContentPresenter Name="stp1" Content="WPFは複雑" Grid.Row="1" Grid.Column="1" Height="22" Margin="9,0,0,0" ContentPresenter.ContentTemplate DataTemplate TextBlock Text="{Binding}" / /DataTemplate /ContentPresenter.ContentTemplate /ContentPresenter 親要素のContentが参照される この例では、TextBlockは「WPFは複雑」と表示されます。 理由は純粋に、ContentプロパティがInhert属性のプロパティなので、ContentPresenterがテンプレートを使ってビジュアルツリーを構築する際に、TextBlock.ContentもContentPresenter.Contentを参照します。 コントロールテンプレート コントロールテンプレートではコントロールの構造と外観を定義します。 スタイルとしてコントロールテンプレートを適応することで、コントロールの構造や外観を再定義することができます。 コントロールテンプレートはControlクラスを継承した多くのコントロールに対して適応できます。 参考 MSDN コントロールテンプレートを適応するというのは、そのコントロールのビジュアルツリーを書き換えることを意味します。 ただし、コントロールのビジュアルツリーの一部だけを書き換えることはできません。 カスタムコントロールテンプレート例 タブ トリガー プロパティの値を判断し、動的に任意のプロパティ値を設定することができる。 if構文と違い、判断するデータソースや設定可能なデータソースは限られている。 データテンプレートで使用する場合は、そのデータがデータソースとなる。(ItemsSource属性を持つComboBoxやListBoxの場合、各要素をデータテンプレートを使って表示する際の各要素がデータソースとなる) よって、プログラマが自由なデータソースを指定し、その値を動的に評価して処理を分岐するといったif構文のような処理は行えない。
https://w.atwiki.jp/atachi/pages/37.html
入力値のバリデーション 複数行の入力 入力文字列の検証に正規表現を使用する テキストボックスとIMEとの関係 入力値のバリデーション テキストボックスに入力されている値が正しい値であるかを判断し、正しくない場合にエラー表示を行います。 入力値のバリデーション 複数行の入力 AcceptsReturn属性をtrueにセットすると、ユーザーからのEnterキーの入力を受け付けるようになります。TextWrapping属性やVerticalScrollBarVisibility属性、HorizontalScrollBarVisibility属性との併用を検討します。 TextWrapping属性は文字列の自動改行を行うかどうかを設定するフラグです。 VerticalScrollBarVisibility属性・HorizontalScrollBarVisibility属性はテキストボックスのスクロールバーを表示するかしないかを指定するものです。 入力文字列の検証に正規表現を使用する CodeProjectにそれらしき記事の投稿がありました。 http //www.codeproject.com/KB/WPF/RegexValidationInWPF.aspx テキストボックスとIMEとの関係 WPFのTextBoxにはIMEとの関係で様々な問題が今でも残っています。 TextBox で添付ビヘイビアを使ったところ、IME と干渉するのか重大エラーが!IMEを使っている場合のみに発生するという厄介な問題。 IMEで変換状態中でもTextBox.TextChangedが発生するイベントの動作的には正しいが、例えばエンターキーやスペースキーの入力を検出したい場合に、それが変換中のEnterなのかそうでないのかをプログラマがロジックで判断しなければならない。
https://w.atwiki.jp/neurosurg/pages/50.html
抗菌薬の使い方 岩田健太郎 検索 目次 1.ペニシリンの使い方 2.セファロスポリンの使い方 3.血液培養について 4.ESBLについて 5.ST合剤 6.重症感染症とempiric therapy 7.抗菌薬と薬理学 8.投与量について 9.アミノグリコシドについて 10.キノロン系抗菌薬について 11.高齢者への投与法 12.抗菌薬と腎臓 13.マクロライドの使い方 14.その他の抗菌薬 15.目の感染症 今日 - 昨日 - 総計 -
https://w.atwiki.jp/nina_a/pages/58.html
カテゴリ「WPF」に属するページ一覧 WPF/Canvasによるドラッグ・アンド・ドロップ WPF/アニメーション WPF/ゴースト付きのドラッグ・アンド・ドロップ WPF/テンプレート WPF/ドラッグ・アンド・ドロップ WPF/バインディング WPF/依存プロパティ WPF/装飾レイヤー
https://w.atwiki.jp/atachi/pages/42.html
NotifyMessageとはタスクバーのタスクトレイに表示されるメッセージのこと。 参考サイト http //www.codeproject.com/KB/WPF/wpf_notifyicon.aspx
https://w.atwiki.jp/atachi/pages/46.html
リストボックスはListBoxクラスによって実装されたデータ駆動型コントロールです。 表示するデータはWPFから設定するか、ListBox.ItemsSourceプロパティへコレクションをバインドして設定します。 チェックボックスリストボックス 使い方 SelectionMode属性 を設定し、複数のアイテムを選択可能にしています。 ListBoxItem には IsSelected属性 で選択状態を設定します。SelectionMode属性がTrueにセットされていない場合に、ListBoxItem.IsSelectedが複数設定されていても1つしか選択された状態にはならないので注意が必要です。 ListBox Name="listBox1" SelectionMode="Multiple" ListBoxItem 北海道 /ListBoxItem ListBoxItem 青森 /ListBoxItem ListBoxItem 秋田 /ListBoxItem ListBoxItem IsSelected="True" 岩手 /ListBoxItem ListBoxItem IsSelected="True" 山形 /ListBoxItem ListBoxItem 宮城 /ListBoxItem /ListBox アイテムの描画 ListBoxItem要素 内に任意のコントロールを描画します。 ListBox Grid.Row="2" Name="listBox1" ListBoxItem Rectangle Fill="AntiqueWhite" Width="100" Height="25"/ /ListBoxItem ListBoxItem Grid Rectangle Fill="Coral" / TextBlock Text="青森" / /Grid /ListBoxItem ListBoxItem StackPanel Orientation="Horizontal" TextBox Width="30" Text="1" / TextBox Width="30" Text="2" / TextBox Width="30" Text="3" / /StackPanel /ListBoxItem ListBoxItem Button Content="実行" / /ListBoxItem ListBoxItem IsSelected="True" 山形 /ListBoxItem ListBoxItem 宮城 /ListBoxItem /ListBox Tips スムーズなスクロール ListBoxでは項目のスクロールは、「項目単位」でスクロールするようになっています。 これをスムーズなスクロール(ドット単位でのスクロール)に変更することができます。 ListBox ScrollViewer.CanContentScroll="False" / CanContentScrollプロパティの値をFalseに設定すると、スムーズなスクロールになります。 アイテムを横幅全体に表示する 通常の使用方法では気にする必要はありませんが、項目をDataTemplateを使って表示するに項目がListBoxの幅全体を使って表示してほしい場合があります。 ListBox.HorizontalContentAlignmentプロパティを明示的にStretchと指定することで各要素の横幅が全体に表示されます。 #ref error :ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (HorizontalContentAlignment_B.jpg) ↓設定後 #ref error :ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (HorizontalContentAlignment_BA.jpg) 項目の横にあるスペースをなくす #ref error :ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (ListBoxSpace.gif) ListBoxの要素に使用されているListBoxItemクラスのスタイルで定義されているPaddingプロパティが原因です。 次のようにItemContainerStyleを使ってListBoxItemに設定するスタイルを設定することで、スペースが無くなります。 ListBox ListBox.ItemContainerStyle Style TargetType="ListBoxItem" Setter Property="Padding" Value="0"/ /Style /ListBox.ItemContainerStyle /ListBox #ref error :ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (ListBoxNoneSpace.gif) 表示データをバインディングで指定 string型のコレクションをバインドします。 ObservableCollection string items = new ObservableCollection string (); items.Add("北海道"); items.Add("青森"); items.Add("秋田"); items.Add("山形"); ListBox ItemsSource="{Binding items}" / ItemsSourceプロパティでバインドされたコレクションは、1つずつListBoxで表示するための要素に変換されていきます。 デフォルトの設定では、各要素のToString()を呼び出して得られた文字列をListBoxに表示します。 上記のコードは、コレクションの要素がstring型なので、文字列がそのまま表示されていますが、プログラマが用意した独自型の場合には、ListBoxに表示したい文字列をToString()で返すか、次項で説明するデータテンプレートを使用します。 データテンプレート データテンプレートを使うとListBoxのデータソースとバインドを使用して項目を表示できます。 ObservableCollection Person items = new ObservableCollection Person (); items.Add(new Person("佐藤 清")); items.Add(new Person("山田 太郎")); items.Add(new Person("小泉 武信")); items.Add(new Person("加藤 健一郎")); // Personクラスは次のような実装とする public class Person { public Person(string name){ FullName = name; } public string FullName{ get; set; } } ListBox ItemsSource="{Binding items}" ListBox.ItemTemplate DataTemplate WrapPanel TextBlock Text="{Binding FullName}" / /WrapPanel /DataTemplate /ListBox.ItemTemplate /ListBox
https://w.atwiki.jp/atachi/pages/82.html
TextBoxへのバリデーション適応 バリデーションルールの作成 バリデーション失敗時のコントロールテンプレートを設定 TextBoxの設定 補足とか TextBoxへのバリデーション適応 入力値が不正 入力値が正しい バリデーションルールの作成 ValidationRuleクラスのサブクラスを作成し、Validateメソッドをオーバーライドします。 このメソッドが返すValidationResult型には、バリデーションが成功したか失敗したかのフラグを持ち、失敗時にはその理由を設定することができます。 下記のルールは入力値がカタカナで構成されているかどうかを判別するルールです。 namespace WpfTextBox { public class KatakanaRule ValidationRule { public override ValidationResult Validate(object value, System.Globalization.CultureInfo cultureInfo) { if (value is string) { string o = value as string; Regex regex = new Regex(@"^[ア-ヾ]+$"); if (!regex.IsMatch(o)) { return new ValidationResult(false, "カタカナ以外の文字が含まれています。"); } } else { return new ValidationResult(false,"文字が設定されていません"); } return new ValidationResult(true, null); } } } バリデーション失敗時のコントロールテンプレートを設定 WPFのTextBoxにはバリデーション失敗時の処理が含まれていません。 バリデーション失敗時に表示するレイアウトをコントロールテンプレートとしてリソースに定義します。 「icon_alert.gif」は検証失敗を促す「!」マークのアイコンです。フリーのものを借りました。 ControlTemplate x Key="TextBoxErrorTemplate" StackPanel StackPanel Orientation="Horizontal" Image Height="16" Margin="0,0,5,0" Source="/WpfTextBox;component/Assets/icon_alert.gif"/ AdornedElementPlaceholder x Name="Holder"/ /StackPanel Label Foreground="Red" Content="{Binding ElementName=Holder, Path=AdornedElement.(Validation.Errors)[0].ErrorContent}"/ /StackPanel /ControlTemplate TextBoxの設定 最後にTextBoxに作成したバリデーションルールの設定と、バリデーション失敗時に表示するコントロールテンプレートを設定します。 TextBox Margin="10" Name="tbValidTest" VerticalAlignment="Top" Width="250" Validation.ErrorTemplate="{StaticResource TextBoxErrorTemplate}" TextBox.Text Binding Path="Label" Source="{StaticResource myobject}" UpdateSourceTrigger="PropertyChanged" Binding.ValidationRules my KatakanaRule / /Binding.ValidationRules /Binding /TextBox.Text /TextBox 補足とか 「{StaticResource myobject}」は下記のようなクラスを静的リソースとして定義したものです。 Labelプロパティだけをメンバに持ちます。 namespace WpfTextBox { public class MyData { public MyData(){ Label = ""; } public string Label { get; set; } } }
https://w.atwiki.jp/atachi/pages/43.html
参考サイト http //www.codeproject.com/KB/WPF/WPFDropDownColorPicker.aspx
https://w.atwiki.jp/netnet/pages/49.html
どうやら、Ciderでは、コードビハインドを含むコントロールのDesigner表示ができないらしい。 というわけで、DesignerViewモードかを判定すればいいかもしれないということで 以下のサンプルコードをカスタムコントロールのコンストラクタに書くといいかも。 if (DesignerProperties.GetIsInDesignMode(new DependencyObject()) != true) { } 追記・ ちなみに、WindowsFormsの場合には、 Controlには、DesignModeっていうプロパティーがある。 が、コンストラクタでんぽDesginModeの判別はできない・・・。 ので、コンストラクタでデザイナーである可能性を判別できるとしたら、 if(Assembly.GetEntryAssembly() != null) { } だろうか。 なぜかエントリーのアセンブリはないらしい。 とりあえず、これで動く状態にはなりそうだが、どうなのだろう。 参考ソース http //blogs.msdn.com/jgalasyn/archive/2007/10/29/troubleshooting-wpf-designer-load-failures.aspx